中断 && 异常 && 系统调用

2015-12-26

中断 && 异常 && 系统调用

基本概念

操作系统需要两种CPU状态:  内核态(Kernel Mode):运行操作系统程序  用户态(User Mode):运行用户程序

用户态 → 内核态 - 唯一途径 → 中断/异常/陷入机制

内核态 → 用户态 - 设置程序状态字PSW

系统调用就属于第二种. (访管指令)

中断和异常

中断和异常是操作系统的驱动.

中断(外中断), 是外部事件,导致硬件的中断: - I/O 中断 - 时钟中断 - 硬件故障

异常(内中断), 是由CPU运行的指令而产生的: - 系统调用 - 页故障 - 保护性异常 - 断点指令(调试程序) - 其他

示意图如下:

可以看出,最关键是的如何使用向量表找到中断程序的入口地址.

通过GDT找到段基址,通过IDT找到偏移量,这样就可以知道中断程序的入口地址了.

系统调用

这是write(1,"hello",7)的汇编代码,可以看到,通过压栈存储所有的变量,然后执行int 0x80 产生系统调用. 最后,举一个linux中系统调用的例子:

Category: OS Tagged: system

Comments